// js 中的 作用域 全局 函数 eval
// js 的作用域 是 静态的  作用域是定义时就产生的
// 执行函数时 执行上下文 EC

// 全局上下文 函数上下文

// 变量对象 variable object VO
// 作用域链 
// this

// VO 是由 js 引擎实现的 var a = 1
var a = 100
function sum () {

}
/**
vo(globalContext) {
    a : 100,
    sum: ref to function sum
}
this.a this.sum
*/ 
// 执行上下文的 周期 分为 创建阶段 代码执行阶段
// VO => AO 
// VO + + argumnets = AO
function sum (a, b) {
    var c = 10
    var d = function() {

    }
    function total() {}
    b = 10
}

sum(10)

// 1. 找形参 没有实参就是 undefined
// 2. 查找函数声明 名字相同 后来覆盖
// 3. 变量声明  名字重复 变量存在 不会覆盖
// 创建阶段 => 预解析阶段
/**
 * vo(sum) {
 *  a:10,
 *  b: undefined,
 *  total: ref to function total,
 *  d: undefined
 * }
 */